-- Insert Scale Numbers to MIDI notes

local editor = reaper.MIDIEditor_GetActive()
local take = editor and reaper.MIDIEditor_GetTake(editor)

if not take then
  local item = reaper.GetSelectedMediaItem(0, 0)
  if item then take = reaper.GetActiveTake(item) end
end

if not take then
  reaper.ShowMessageBox("Please select a MIDI item and open the MIDI Editor first!", "Error", 0)
  return
end

local ret, input = reaper.GetUserInputs("Scale Numbers to MIDI", 1,
  "Paste your numbers here (space separated 1-12):", "")

if not ret or input == "" then return end

reaper.Undo_BeginBlock()
reaper.MIDI_SelectAll(take, false)

local start_ppq = 0
local ppq_len = 480
local base = 60

for num in input:gmatch("%S+") do
  local n = tonumber(num)
  if n and n >= 1 and n <= 12 then
    local pitch = base + n - 1
    reaper.MIDI_InsertNote(take, true, false, start_ppq, start_ppq + ppq_len, 0, pitch, 100, true)
    start_ppq = start_ppq + ppq_len
  end
end

reaper.MIDI_Sort(take)
reaper.Undo_EndBlock("Insert scale numbers", -1)
reaper.UpdateArrange()

reaper.ShowMessageBox("Notes inserted successfully!", "Done", 0)